#!/usr/bin/env node

const fs=require('fs'),
      file=process.argv[2],
      log=console.log;

if(process.argv.length !== 3){
    console.error('命令行参数格式: cmd fileName');
    process.exit(1);
}

let buf;

try{
    buf= fs.readFileSync(file);
} catch(e){
    console.error(e.message);
    process.exit(2);
}

if(buf.toString('ascii',0,2) === 'BM'){
    log('width:', buf.readInt32LE(0x12))
    log('height:', buf.readInt32LE(0x16))
    log('color depth:', buf.readUInt16LE(0x1c))
}

/**
 * if (buf.toString('ascii', 0, 2) === 'BM') { ... }

检查文件的前两个字节是否为 'BM'，这是BMP图像文件的文件头标识。如果是，继续处理文件；如果不是，脚本将不做任何输出并正常结束。
log('width:', buf.readInt32LE(0x12));

使用 Buffer 类的 readInt32LE 方法读取图像的宽度。在BMP文件中，宽度通常存储在偏移量 0x12（18字节）处。
log('height:', buf.readInt32LE(0x16));

使用 Buffer 类的 readInt32LE 方法读取图像的高度。在BMP文件中，高度通常存储在偏移量 0x16（22字节）处。
log('color depth:', buf.readUInt16LE(0x1c));

使用 Buffer 类的 readUInt16LE 方法读取图像的颜色深度。在BMP文件中，颜色深度通常存储在偏移量 0x1c（28字节）处。
 */